/**
 * 想服务器获取数据的定义接口，静态HTML网页返回成功之后，
 * 向服务器获取数据，返回为json格式的，数据返回成功之后在进行加载
 *
 * 特别注意json解析不成功将不能返回结果，并没有提示,所以确保json解析不错出错
 */


/**
 * 解析URL中的参数
 * @param link
 * @returns {{}}
 */
function parseParams(link) {
    var paramMap = {};
    if (link.length > 1) {
        var paramStr = link[1].split("&");
        for (var i = 0; i < paramStr.length; i++) {
            var param = paramStr[i].split("=");
            if (param.length === 2) {
                paramMap[param[0]] = param[1]
            }
        }
    }
    return paramMap;
}


/**
 * 向服务器获取数据，然后解析template模板
 * @param content
 * @param next
 * @param url
 */
function queryAndParseTemplate(content, next, url) {
    if (url === undefined || url === '') {
        var template = Template7.compile(content);
        var resultContent = template();
        next(resultContent);
    } else {
        $$.getJSON(url, function (data) {
            var template = Template7.compile(content);
            var resultContent = template(data);
            next(resultContent);
        })
    }
}

/**
 * ajax加载页面返回,页面没有动态数据的，则无需定义case，直接返回HTML内容，
 * 如果有参数需要传递，则需要自定义方法，如没有，可使用默认的
 * @param content
 * @param url
 * @param next
 * @returns {*}
 */
var preProcess = function parsePages(content, url, next) {

    var link = url.split("?");
    url = link[0];
    var paramMap = parseParams(link);

    console.log('url: ', url, ' \n params: ', paramMap);

    switch (url) {
        case  './index/home.html':
            queryOrderListByType(content, next, paramMap['type']);
            break;
        case './user/center.html':
            queryAndParseTemplate(content, next, '../static/custom/test/user-center.json');
            break;
        case './user/user-info.html':
            queryAndParseTemplate(content, next);
            break;
        default:
            return queryAndParseTemplate(content, next)
    }


};


function queryOrderListByType(content, next, type) {
    if (type === undefined) type = 1;
    $$.getJSON('../static/custom/test/order-list.json?type=' + type, function (data) {
        data.type = type;
        var template = Template7.compile(content);
        var resultContent = template(data);
        next(resultContent);
    })
}

